package tcp;

import java.io.*;
import java.net.*;
import javax.swing.JFileChooser;

public class ClienteTCP {

    static int PORTA = 5001;
    static String caminho = System.getProperty("user.dir") + "\\src\\downloads";
    static String hostIP = "127.0.0.1"; //ou localhost

    public static void main(String args[]) throws Exception {

        System.out.println("ClienteTCP executando:");

        //Socket UDP
        Socket socketTCP = new Socket(hostIP, PORTA);

        DataOutputStream saidaParaServidor = new DataOutputStream(socketTCP.getOutputStream());

        BufferedReader entradaUsuario
                = new BufferedReader(
                        new InputStreamReader(System.in));

        BufferedReader entradaServidor
                = new BufferedReader(
                        new InputStreamReader(socketTCP.getInputStream()));

        String pacoteFinal = entradaUsuario.readLine();
        pacoteFinal += "\n";
        //Envia o nome do arquivo
        saidaParaServidor.writeBytes(pacoteFinal);
        long timeInicial = System.currentTimeMillis();//Inicia contagem
        System.out.println(pacoteFinal);
        char saida[] = new char[1025];

        //Aguardand resposta do servidor
        entradaServidor.read(saida);
        long RTT = System.currentTimeMillis() - timeInicial;//Retorna o tempo do RTT
        System.out.println("RTT: " + RTT + " ms");

        //verificação do cabeçalho
        if (saida[1024] == 0) {
            System.out.println("Recebeu ");
            //Arquivo encontrado!
            //para salvar
            JFileChooser chooser = new JFileChooser(caminho);
            chooser.showSaveDialog(null);
            FileOutputStream in = new FileOutputStream(chooser.getSelectedFile());
            //////////////////////////////
            //salva no arquivo
            for (int i = 0; i < 1024; i++) {
                in.write(saida[i]);
            }
        } else {
            //Arquivo não encontrado            
            String resposta = new String(saida);
            System.out.println("ERRO! DADOS de resposta: " + resposta);
        }
    }
}
